package leetcode;

import java.util.LinkedList;
import java.util.List;

public class Solution77 {

    private LinkedList<List<Integer>> res = new LinkedList<>();

    private LinkedList<Integer> track = new LinkedList<>();

    public List<List<Integer>> combine(int n, int k) {
        doTrack(n,1,k);
        return res;
    }

    private void doTrack(int n, int start, int limit) {
        if(track.size() == limit){
            res.add(new LinkedList<>(track));
            return;
        }
        for (int i = start; i <= n; i++) {
            track.add(i);
            doTrack(n,i+1,limit);
            track.removeLast();
        }

    }


//    public List<List<Integer>> combine(int n, int k) {
//        int[] nums = new int[n];
//        for (int i = 0; i < n; i++) {
//            nums[i] = i+1;
//        }
//        doTrack(nums,0,k);
//        return res;
//    }
//
//    private void doTrack(int[] nums, int start, int limit) {
//        if(track.size() == limit){
//            res.add(new LinkedList<>(track));
//            return;
//        }
//        for (int i = start; i < nums.length; i++) {
//            track.add(nums[i]);
//            doTrack(nums,i+1,limit);
//            track.removeLast();
//        }
//
//    }
}
